<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
/**
 * @property Doctrine $doctrine Biblioteca ORM
 * Controller para gerenciar suites de teste
 *
 */
class SuiteTeste extends AdminController {

    /**
     * Metodo para listar os cadastros
     *
     * @param int $offset Registro inicial
     */
    public function index( $page = 0 ) {
        $findBy = array();
        if( isNotBlank( $this->input->post( 'nome' ) ) ) {
            $findBy = array_merge( $findBy, array( 'nome' => $this->input->post( 'nome' ) ) );
        }
        $offset = 0;
        if( $page != 0 ) {
            $offset = ($page-1)*LIMITE_PAGINACAO_ADMIN;
        }
        $lista = $this->doctrine->em->getRepository( 'SuitesTestes' )->findBy(
                $findBy, 
                NULL, 
                LIMITE_PAGINACAO_ADMIN, 
                $offset
            );
        
        $total = count($lista);

        $this->assign( 'lista', $lista );
        $this->assign( 'total', $total );

        $this->display( 'suiteteste/index' );
    }

    /**
     * Exibe a tela de inserção/alteração
     *
     * @param int 
     */
    public function editar( $id = null ) {
        if( !empty( $id ) && $_SERVER['REQUEST_METHOD'] == 'GET' ) {
            $obj = $this->doctrine->em->getRepository( 'SuitesTestes' )->find( $id );
            // colocamos os dados na variavel $_POST
            $_POST = (array) $obj;
            
            $suites = $this->getSuitesProjeto( $id );
            $this->assign( 'suites_projeto', $suites );
            $total = count( $suites );
            $this->assign( 'total', $total );
        }
        $this->display( 'suiteteste/editar' );
    }

    /**
     * Insere um novo objeto ou altera um existente
     *
     * @param int
     */
    public function salvar( $id = null ) {
        $dao = new SuitesTestes();
        // se está editando (informou o código)
        if( !empty( $id ) ) {
            // pegamos o registro do banco de dados
            $dao = $this->doctrine->em->getRepository( 'SuitesTestes' )->find( $id );
        }
        populateForm( $dao, $this->input->post() );
        
        $this->doctrine->em->persist( $dao );
        $this->doctrine->em->flush();

        redirect( 'admin/suiteteste/index' );
    }

    /**
     * Remove um aluno
     *
     * @param int 
     */
    public function remover( $id ) {
        if( !empty( $id ) ) {
            // removemos o objeto
            $dao = $this->doctrine->em->getRepository( 'SuitesTestes' )->find( $id );
            if( $dao != null ) {
                $this->doctrine->em->remove( $dao );
                $this->doctrine->em->flush();
            }
        }
        redirect('admin/suiteteste/index');
    }
    
    //////////////////////////////////////////////////////////////////////////
    
    private function getSuitesProjeto( $idSuite ){
        $sql = "select "
               ."* "
                . "from "
                . "projetos "
                . "where id_suite_teste = $idSuite";
        $stmt = $this->doctrine->em->getConnection()->prepare($sql);
        $stmt->execute();
        $suites = $stmt->fetchAll();
        return $suites;
    }
}
/* End of file suite.php */
/* Location: ./application/controllers/admin/suite.php */
